SPB Git
1.2 KB · 14 lines typescript
1import { getPaper } from "@/lib/papers/queries";2import { bibtex, citationApa, citationChicago, ris } from "@/lib/papers/citation";3import { citable } from "@/lib/papers/meta";4import { limited, tooMany } from "@/lib/api";5export async function GET(req: Request, { params }: { params: Promise<{ id: string; format: string }> }) {6  if (limited(req, "api")) return tooMany();7  const { id, format } = await params; const p = await getPaper(id); if (!p) return Response.json({ error: "Not found" }, { status: 404 });8  const c = citable(p); const h = { "Cache-Control": "public, max-age=300" };9  if (format === "bib") return new Response(bibtex(c), { headers: { ...h, "Content-Type": "application/x-bibtex; charset=utf-8", "Content-Disposition": `attachment; filename="${p.slug}.bib"` } });10  if (format === "ris") return new Response(ris(c), { headers: { ...h, "Content-Type": "application/x-research-info-systems; charset=utf-8", "Content-Disposition": `attachment; filename="${p.slug}.ris"` } });11  if (format === "json") return Response.json({ apa: citationApa(c), chicago: citationChicago(c), bibtex: bibtex(c), ris: ris(c) }, { headers: h });12  return Response.json({ error: "Unknown format" }, { status: 400 });13}14
Files · main
Menu

Theme